import { useNavigate } from 'react-router-dom';

// 导航选项类型定义
type NavigateOptions = {
    replace ?: boolean; // 是否替换当前路由
    state ?: Record<string,unknown>; // 传递的状态数据
}

// 自定义导航钩子
function useCustomNavigate(){
    const navigate = useNavigate(); // 获取react-router-dom提供的useNavigate钩子

    // 导航到指定页面
    const goToPage = (
        path:string, // 目标路径
        options?:NavigateOptions // 导航选项
    ) => {
        navigate(path,{
            replace:options?.replace || false, // 是否替换当前路由，默认为false
            state:options?.state || undefined, // 传递的状态数据，默认为undefined
        });

        console.log(`Navigate to ${path} with options: ${JSON.stringify(options)}` ) // 打印导航信息到控制台
    };

    // 返回上一页
    const goBack = () => {
        navigate(-1); // 使用-1表示返回上一页
    }

    // 前往下一页
    const goForward = ()=>{
        navigate(1); // 使用1表示前往下一页
    };

    return { goToPage, goBack, goForward }; // 返回导航函数
}

export { useCustomNavigate }; // 导出自定义导航钩子